package com.wei.czz.framework.common.service;


import com.wei.czz.common.dto.common.GroupValue;
import com.wei.czz.common.dto.common.NameValue;
import com.wei.czz.framework.common.entity.RegionCodeEntity;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 省市区街道四级国标码表
 *
 * @author wei
 * email 945158190@gmail.com
 * date 2023-11-27 17:07:47
 */
public interface RegionCodeService {

    /**
     * 获取所有省份操作
     * @return 省份列表
     */
    List<GroupValue<NameValue<Integer>>> getProvinceList();

    /**
     * 获取所有城市操作
     * @return 城市列表
     */
    List<GroupValue<NameValue<Integer>>> getCityList();

    /**
     * 获取所有区县操作
     * @return 区县列表
     */
    List<GroupValue<NameValue<Integer>>> getDistrictList();

    /**
     * 获取所有街道操作
     * @return 街道列表
     */
    List<GroupValue<NameValue<Integer>>> getStreetList();

    /**
     * 获取下一级列表操作
     * @param code 父级code
     */
    List<GroupValue<NameValue<Integer>>> getChildrenList(Integer code);

    /**
     * 批量获取下一级列表操作
     * @param codeList 父级code列表
     */
    Map<Integer, List<GroupValue<NameValue<Integer>>>> batchGetChildrenList(List<Integer> codeList);

    /**
     * 获取四级国标地区列表操作
     * @param level 级别
     * @return 国标地区列表
     */
    List<RegionCodeEntity> getLevelRegionList(Integer level);

    /**
     * 获取名称操作
     * @param code 国标码
     */
    String getName(Integer code);

    /**
     * 批量获取名称操作
     * @param codeCollection 国标码集合
     */
    Map<Integer, String> batchGetName(Collection<Integer> codeCollection);
}

